A telecommunications carrier provides telecommunications access, such as voice and data communications, to customers. Each telecommunications carrier is equipped to route calls to their destination directly (through use of their own networks), or indirectly by the networks of other telecommunications carriers if necessary.
Telecommunications carrier network can include various forms of communication networks and equipment, including but not limited to: switches, routers, hubs, repeaters, bridges, servers, etc. Such networks can include packet-switched data networks (e.g., the Internet, intranets, extranets, subnets), the public switched telephone network (PSTN), wireless networks, local area networks (LANs), wide area networks (WANs), peer-to-peer networks, satellite networks, radio and television broadcast networks, optical networks, metro area networks (MAs), computer networks, grid networks, exchanges (e.g., private branch exchange (PBX)), broadband integrated data services network (B-ISDN) access networks, digital subscriber lines (DSL), cable, etc.
A telecommunication service provider, which purchases telephone numbers from the telecommunications carrier, assigns the numbers to customers, and provides customers with implementations of communications applications, may receive a call offer, establish the call, and route the call to its destination either directly or through another service provider. When calls are routed, a call loop may occur when the call is handed off to a subsequent service provider that is unaware of the path taken by the call to reach said subsequent provider. As a result, the subsequent service provider may route the call back through a prior service provider that has already processed and forwarded the call. In this manner, the call may continue to be routed and re-routed indefinitely amongst several providers without ever reaching its destination, resulting in unnecessary routing and usage of network resources.
In effort to “fix” such looping conditions, devices such as the engine 130 shown in FIG. 1 have been developed for addressing looping conditions after they have occurred.
Turning now to FIG. 1, a conventional system 100 that utilizes the aforementioned engine 130 is illustrated. The system 100 includes a customer switch 110 for receiving call offers 101 from customers; a network switch 120 in communication with the customer switch 110 for receiving and routing the call offers 101; the engine 130, which includes a database 140, in communication with the network switch 120; and a vendor switch 150, also in communication with the network switch 120, for routing call offers 101 to their final destination.
In operation, a customer switch 110 receives a call offer 101. The call offer 101 is routed to the network switch 120 by the customer switch 110. The call offer 101 is then routed to the vendor switch 150 based on routing tables stored in the network switch 120. Since the vendor switch 150 is unaware that the call offer 101 has already been processed by switch 110, the call offer 101 may be returned back to the customer switch 110, which in turn resends the call offer 101 to the network switch 120. The network switch 120 again sends the call offer 101 to the same vendor switch 150, which returns the call offer 101 back to the customer switch 110, thereby creating a looping condition.
Each time the network switch 120 routes the call offer 101 to the vendor switch 150, certain information 103 associated with the call offer 101 is sent to the engine 120 and stored in the database 140. The database 140 keeps track of the number of times the call offer 101 is routed through the network switch 120.
Once the call offer 101 has been routed through the network switch 120 a specific number of times within a predetermined period of time, the engine 130 alerts 105 the network switch 120 that a looping condition is occurring. The network switch 120, in turn, alerts 107 the customer switch 110. One or both of the network switch 120 and customer switch 110 then updates their respective routing tables to block subsequent loops, and to prevent call offers having the same origin and destination from ever reaching the network switch 120.
Importantly, the call offer 101 will continue to loop through the system 100, even after the looping condition has been detected, until a block may be established via, for example, updating the routing tables of one or more network switches (e.g., 110, 120), which results in significant call delay and unnecessary consumption of system resources.
Therefore, there is a need for detecting and terminating a looping condition in real-time without having to update routing tables, thereby avoiding the delays and wasted resource consumption of the prior art.